package com.atguigu.lease.web.admin.custom.converter;

import com.atguigu.lease.model.enums.ItemType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

/**
 * 配置字符串转成ItemType的转化器
 * -
 * 步骤1: 实现Springmvc提供的转化器接口 implements Converter<String, 目标类型>
 *          String value =  request.getParameter("key");
 * 步骤2: 完成转化的方法(源) -> return 枚举类型即可;
 * 步骤3: 配置给Springmvc框架
 * -
 *         param    StringToItemTypeConverter
 * 前端    path     StringToItemTypeConverter       Java代码      mybatis-plus的转化器       数据库
 *        json     jackson的转化器
 */

@Component//通过类路径扫描的方式自动装配bean到IOC容器中的
public class StringToItemTypeConverter implements Converter<String, ItemType> {
    @Override
    public ItemType convert(String source) {
        //1.拿到枚举类的所有值
        //循环枚举值
        //拿到枚举的code，判断是否跟soure一致
        //一致，返回枚举值
        //不一致，返回错误
        for (ItemType itemType : ItemType.values()) {
            if (itemType.getCode().equals(Integer.valueOf(source))) {
                return itemType;
            }
        }
        throw new RuntimeException("没有对应的code类型");
    }
}

